const md5 = require('blueimp-md5')
// 1. 连接数据库
// 1.1. 引入 mongoose
const mongoose = require('mongoose')
// 1.2. 连接指定数据库(URL 只有数据库是变化的)
mongoose.connect('mongodb://localhost:27017/bossz')
// 1.3. 获取连接对象
const conn = mongoose.connection
// 1.4. 绑定连接完成的监听(用来提示连接成功)
conn.on('connected', function () {
  console.log('数据库连接成功')
})


// const userSchema = mongoose.Schema({
//   // 指定文档结构：属性名、属性值的类型。是否是必须的，默认值
//   username: { type: String, required: true }, // 用户名
//   password: { type: String, required: true }, // 密码
//   type: { type: String, required: true }, // 用户类型: dashen/laoban
// })

const userSchema = mongoose.Schema({
  username: { type: String, required: true }, // 用户名
  password: { type: String, required: true }, // 密码
  type: { type: String, required: true }, // 用户类型: dashen/laoban
  header: { type: String }, // 头像名称
  post: { type: String }, // 职位
  info: { type: String }, // 个人或职位简介
  company: { type: String }, // 公司名称
  salary: { type: String } // 工资
})

// // 定义 Model(与集合对应, 可以操作集合)
const UserModel = mongoose.model('user', userSchema)  // 集合名: users

// 通过 Model 实例的 save()添加数据
function testSave() {
  // user 数据对象
  const user = {
    username: 'xfzhang',
    password: md5('1234'),
    type: 'dashen',
  }
  // 初始化
  const userModel = new UserModel(user)
  // 保存到数据库
  userModel.save(function (err, user) {
    console.log('save', err, user)
  })
}
// testSave()

// 通过 Model 的 find()/findOne()查询多个或一个数据
function testFind() {
  // 查找多个
  UserModel.find({username:{$regex:"a"}},function (err, users) { // 如果有匹配返回的是一个[user, user..], 如果没有一个匹配的返回[]
    console.log('find() ', err, users)
  })
  // 查找一个
  UserModel.findOne({ _id: '6322db647da673b202c3a764' }, function (err, user) { // 如果有匹配返回的是一个 user, 如果没有一个匹配的返回 null
    console.log('findOne() ', err, user)
  })
}
testFind()



// 通过 Model 的 findByIdAndUpdate()更新某个数据
function testUpdate() {
  UserModel.findByIdAndUpdate({ _id: '6322db647da673b202c3a764' }, { username: 'yyy' },
    function (err, user) {
      console.log('findByIdAndUpdate()', err, user)
    })
}
// testUpdate()


// 通过 Model 的 remove()删除匹配的数据
function testDelete() {
  UserModel.remove({ username:{$regex:"ss"} }, function (err, result) {
    console.log('remove()', err, result)
  })
}
// testDelete()